package cn.core.sign.service.intf;

import cn.core.sign.eo.Org;
import cn.core.sign.qo.OrgQO;
import cn.core.sign.vo.OrgVO;
import cn.core.tool.util.CoreTree;
import cn.core.tool.util.Paging;
import cn.core.tool.util.Param;

import java.util.Collection;

/**
 * 组织机构 服务接口
 */
public interface IOrgService {

  /**
   * 组织机构 >>> 保存
   */
  public Org save(Org eo) throws Exception;

  /**
   * 组织机构 >>> 批量保存
   */
  public Collection<Org> saveBatch(Collection<Org> eos) throws Exception;

  /**
   * 组织机构 >>> 修改
   */
  public Org update(Org eo) throws Exception;

  /**
   * 组织机构 >>> 批量修改
   */
  public Collection<Org> updateBatch(Collection<Org> eos) throws Exception;

  /**
   * 组织机构 >>> 删除
   */
  public void remove(Org eo) throws Exception;

  /**
   * 组织机构 >>> 批量删除
   */
  public void removeBatch(Collection<Org> eos) throws Exception;

  /**
   * 组织机构 >>> 数据量
   */
  public Long count(OrgQO qo) throws Exception;

  /**
   * 组织机构 >>> 主键查询
   */
  public Org pk(OrgQO qo) throws Exception;

  /**
   * 组织机构 >>> 查询
   */
  public Collection<Org> query(OrgQO qo) throws Exception;

  /**
   * 组织机构 >>> 分页
   */
  public Paging<Org> paging(Param<OrgQO> param) throws Exception;

  /**
   * 组织机构 >>> 业务数据量
   */
  public Long countVo(OrgQO qo) throws Exception;

  /**
   * 组织机构 >>> 业务主键查询
   */
  public OrgVO pkVo(OrgQO qo) throws Exception;

  /**
   * 组织机构 >>> 业务查询
   */
  public Collection<OrgVO> queryVo(OrgQO qo) throws Exception;

  /**
   * 组织机构 >>> 业务分页
   */
  public Paging<OrgVO> pagingVo(Param<OrgQO> param) throws Exception;

  /**
   * 组织机构 >>> 组织机构树
   */
  public CoreTree<?> getOrgTreeData(OrgQO qo) throws Exception;

  /**
   * 组织机构 >>> 组织机构岗位树
   */
  public CoreTree<?> getOrgPostTreeData(OrgQO qo) throws Exception;

  /**
   * 组织机构 >>> 组织机构岗位员工树
   */
  public CoreTree<?> getOrgPostStaffTreeData(OrgQO qo) throws Exception;

}
